/**
 * 
 */
package com.obradovicnjegovan.webprodavnica.components;

import java.util.HashSet;

import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.hibernate.annotations.CommitAfter;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.Request;

import com.obradovicnjegovan.webprodavnica.controller.ControllerAL;
import com.obradovicnjegovan.webprodavnica.entities.Korpa;
import com.obradovicnjegovan.webprodavnica.entities.OdabranProizvod;
import com.obradovicnjegovan.webprodavnica.entities.Proizvod;
import com.obradovicnjegovan.webprodavnica.pages.About;
import com.obradovicnjegovan.webprodavnica.pages.Cart;
import com.obradovicnjegovan.webprodavnica.pages.Index;

/**
 * @author njegovan
 *
 */
public class ProizvodPrikaz {
	@Parameter(required = true)
	private Proizvod proizvod;
	@Inject
	private ControllerAL controllerAL;

	public Proizvod getProizvod() {
		return proizvod;
	}

	public void setProizvod(Proizvod proizvod) {
		this.proizvod = proizvod;
	}
	
	public String formatDouble(double cena){
		return controllerAL.formatDouble(cena);
	}
	@Inject
    private Request request;
	@CommitAfter
	public Object onUbaciUKorpu(long id){
		try {
			if (controllerAL.daLiKorpaPostoji()) {
				Korpa korpa = controllerAL.getKorpa();
				for (OdabranProizvod od : korpa.getOdabraniProizvodi()) {
					if (od.getProizvod().equals(controllerAL.pronadjiProizvod(id))) {
						od.setKolicina(od.getKolicina()+1);
						controllerAL.sacuvajOdabranProizvod(od);
						return Cart.class;
					}
				}
				OdabranProizvod od = controllerAL.ubaciProizvodUKorpu(controllerAL.pronadjiProizvod(id), korpa, 1);
				korpa.getOdabraniProizvodi().add(od);
				controllerAL.sacuvajKorpu(korpa);
				return Cart.class;
			} else {
				controllerAL.setRequest(request);
				Korpa korpa = new Korpa();
				korpa.setOdabraniProizvodi(new HashSet<OdabranProizvod>());
				OdabranProizvod od = controllerAL.ubaciProizvodUKorpu(controllerAL.pronadjiProizvod(id), korpa, 1);
				korpa.getOdabraniProizvodi().add(od);
				controllerAL.sacuvajKorpu(korpa);
				controllerAL.preuzmiKorpu(korpa);
				return Cart.class;
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		return Cart.class;
	}
	
	public boolean isImaProizvodaNaStanju(){
		if (proizvod.getStanjeNaZalihama()>0) {
			return true;
		}
		return false;
	}
}